1. Field of the Invention
This invention relates to D/A converters of the sigma-delta noise-shaping type. More particularly, this invention relates to multi-bit noise-shapers, i.e., where the quantizer truncates the digital word to more than 1-bit.
2. Description of the Prior Art
One of the problems with noise-shaping D/A converters is that of removing the large amount of out-of-band noise produced by the digital modulator. One approach to solving this problem is to use switched-capacitor low-pass filters, as illustrated in FIG. 1. Such filters are however relatively expensive in silicon area, and often exhibit non-ideal behavior such as increased noise and distortion products.
Another approach to solving this problem is to use a multi-bit noise-shaper, where the quantizer truncates the digital word to more than 1 bit. Such a system is illustrated in FIG. 2. By using multiple levels and arranging the loop such that the idle-channel limit-cycle noise only spans a few quantization levels, it is possible to reduce the out-of-band noise significantly compared to the 1-bit case. For example, a loop employing a 5-bit quantizer should allow for reduction of out-of-band noise by roughly a factor of 30:1.
The reason this latter approach has not commonly been used is that errors in the digital-to-analog converter used to turn the multi-bit digital signal into an analog voltage will cause linearity errors in the analog output. This is quite different from the single-bit case, where perfect linearity is guaranteed by virtue of the fact that only two levels exist at the analog output.
Proposals have been made of ways to use "scrambling" techniques to minimize the linearity problem with multi-bit noise-shapers. Examples include an article by L. Richard Carley titled "A Noise-Shaping Coder Topology for 15+ Bit Converters" IEEE J Solid-State Circuits, Vol. SC-24, pp. 267-273, April 1989, and an article by Bosco H. Leung et al titled "Multibit Sigma-Delta A/D Converter Incorporating A Novel Class of Dynamic Element Matching Techniques", IEEE Transactions on Circuits and Systems--II: Analog and Digital Signal Processing, Vol. 39, No. 1, January 1992.
All of such "scrambling" arrangements require that the multi-bit output of the noise shaper first be converted to a "thermometer code". This is a code where all of the bits are equally weighted. For example, a 5-bit binary code converted to a thermometer code would require 31 equally-weighted bits (the "all bits off" state does not require an output bit). If the input number was "11", then the thermometer code would have the bottom 11 bits set to a "1" and the top 20 bits set to "0".
In a thermometer code, it is only the number of "on" bits during a clock period that is important. This fact forms the basis for all of the scrambling algorithms described in this application. Conceptually, scrambling works by dynamically assigning a bit at the scrambler output to one of the input bits, and changing this assignment on a dynamic basis (normally every clock cycle).
It will be evident that these input bit-to-output bit assignments must be mutually exclusive. That is, each input bit may be connected to one and only one output bit. Random scrambling would choose a random configuration of the scrambler on each clock cycle and could be accomplished in hardware by having a 2.sup.N input multiplexer for every output line, where N is the number of binary bits at the input to the thermometer decoder. In this way, every output could independently select an input source, as long as the input source was not already used. However, since this technique requires 2.sup.N switches per output line, it is not practical when N is large.
If a thermometer-decoder output is fed to a DAC consisting of 2.sup.N nominally equally-weighted branches that sum into a summing junction, there will always be some error due to analog matching constraints that cause the weights to be slightly in error. Without any scrambling, this error would result in harmonic distortion, as every particular thermometer-decoded bit is active only during a particular range of input codes to the noise-shaper. With scrambling, there is no longer any correlation between a particular bit coming out of the scrambler and a particular range of input values to the noise-shaper. This causes the error introduced by bit-weight errors in the DAC to be de-correlated from the signal, and hence the effect of a bit-weight error is to cause increased broadband white noise instead of distortion.
The Carley article, referred to above, proposes a scrambler that is based on a fast-fourier-transform-like "Butterfly". This algorithm is carried out by the switch arrangement shown in FIG. 3, illustrated for use with an 8-bit input. The switches in each column work in pairs. For example, the first column in FIG. 3 contains two switches (S0 and S4) that are controlled by logic signal "1A". These two switches use opposite polarities of the control signal 1A as indicated by the logic inversion bubble on one of the two switches.
This Butterfly topology does not allow all possible configurations of input to output mappings, but only a limited subset. However, every input line can connect to every output line, and the number of switches need only be K.N (where K=2.sup.N and N=number of binary bits at the input to the thermometer decoder) instead of K.sup.2 as before.
Since switch "S0" and switch "S4" are both connected to the same two inputs (input I0 and input I4), it will be seen that these two switches operate as a "swapper", as illustrated in block format in FIG. 4. This block will either pass its two inputs directly through to the outputs, when the control signal (Norm/Swap) is low, or "swap" them when the control signal goes high so as to connect the inputs to the outputs reversely. Accordingly, the Butterfly scrambling algorithm can be re-drawn with all groups of switches that receive the same two inputs shown as "swapper" cells, as shown in FIG. 5. For this algorithm each swapper cell would receive a random logic signal (high or low) on each clock cycle. It may be noted that in FIG. 5, the order of the switches in each column has been altered to provide that the interconnection between stages is the same for each stage. Such modification of the flow graph also has been made for FFT structures, as described by A. V. Oppenheim et al, in "Digital Signal Processing", Prentice-Hall, 1975, pg 309.
The increase in white noise floor power resulting from random scrambling may be acceptable for low-performance designs, but to achieve very high performance (for example, greater than 100 dB) still requires very high accuracy in the DAC thermometer weights. To overcome this problem, a solution has been proposed by Leung et al (see above) called "individual level averaging", which results in the output spectrum of each bit at the scrambler output being noise-shaped. This noise-shaping causes the error produced by a non-ideal DAC weight to occur only at high frequencies that are above the band of interest. This allows larger errors to occur in the DAC without increasing the in-band noise penalty.
This approach is based on a rotation-type scrambler where a barrel shifter is used as the scrambling block. For an N-bit input with K=2.sup.N thermometer-decode inputs to the scrambler, there are K unique rotations possible. Such a barrel shifter preserves the number of "1's" at the output.
For each of the possible K=2.sup.N thermometer-decoded scrambler input patterns (where N is the number of bits in the loop quantizer), a memory stores the state of the barrel shifter that was used to map input bits into output bits. Whenever a particular input code is presented to the barrel shifter, the "memory" for that particular input code is examined, and a barrel-shift control word is selected which has not been used yet in the sequence. For example, in the 3-bit case, there are 8 possible input codes and 8 possible barrel-shift positions. For each input code there is a memory that is 7 locations deep. All 7 locations are examined for a particular input code, and whichever barrel-shift code is not found in the memory is used for the current shift control word. This word is then entered in the memory for that particular input code.
This technique guarantees that over a long time period there is no DC error for every possible input code, as all possible barrel-shift locations are used for that input code in the shortest possible time. However, the amount of time taken for this sequence to complete for a given code is data-dependent because it depends on the frequency of occurrence of that particular input code. It is quite possible to get very long repeat times, especially for noise shapers with a high number of quantization levels. This tends to produce lower-frequency noise, and reduces the benefit of this technique in comparison to random averaging using the Butterfly scrambler described above. A serious drawback is that the spectrum of each individual bit output may contain low-frequency noise that degrades the passband signal-to-noise ratio.